#pragma once
#include <thread>
#include <mutex>
#include <condition_variable>
#include "EventLoop.h"
using namespace std;

class WorkerThread { // 工作线程
public:
	WorkerThread(int index);
	~WorkerThread();

	void run(); // 启动工作线程

	EventLoop* getEventLoop() { return _eventLoop; }
private:
	void running(); // 工作线程的任务函数

	thread* _thread;          // 保存线程的实例
	thread::id _threadID;     // 线程ID
	string _name;	          // 线程名
	mutex _mutex;             // 互斥锁
	condition_variable _cond; // 条件变量
	EventLoop* _eventLoop;    // 反应堆模型
};